Coisas

Abaixo está um programa Python, dividido em várias peças. Após cada print, dê o valor que será exibido na tela.

  • Se avaliar a instrução print resultaria em erro, selecione "error" e insira error na caixa.
  • Se o valor da expressão for uma função ou classe, selecione o tipo apropriado e escreva o nome da função ou classe na caixa.
  • Se o valor é uma instância, selecione "instance" e escreva o nome da classe na caixa.

É recomendado desenhar um diagrama de ambiente das instâncias e seus atributos e atualizá-lo conforme avança pelo código.

Parte 1: Coisa 1


class Thing:
    def set(self, v):
        self.x = v
    def get(self):
        return self.x

a = Thing()
a.x = 6
print(a.get())

Tipo:  

Valor:


b = Thing()
a.set(b)
print(a.x)

Tipo:  

Valor:


b.set(1)
print(a.x.x)

Tipo:  

Valor:


print(a.get())

Tipo:  

Valor:


print(a.x.get())

Tipo:  

Valor:


print(3 + a.get().get())

Tipo:  

Valor:


c = a.get()
print(c.x)

Tipo:  

Valor:


a.set(1 - a.get().get())
print(a.x)

Tipo:  

Valor:


c.set(2)
print(a.get().get())

Tipo:  

Valor:


a = Thing()
b = Thing()
a.set(b)
b.set(a)
print(a.x == b)

Tipo:  

Valor:


print(a.x.x == a)

Tipo:  

Valor:


print(a.x.x is a)

Tipo:  

Valor:


print(a.x.x.x == b)

Tipo:  

Valor:


Parte 2: Coisa 2

def thing_mangle(arg):
    arg.set(arg.get() + 1)
    arg.has_been_mangled = True

a = Thing()
print(a.has_been_mangled)

Tipo:  

Valor:


a.set(9)
thing_mangle(a)
print(a.get())

Tipo:  

Valor:


print(a.has_been_mangled)

Tipo:  

Valor:


b = Thing()
b.set(Thing())
b.get().set(9)
print(thing_mangle(b.get()))

Tipo:  

Valor:


print(b.get())

Tipo:  

Valor:


print(b.get().get())

Tipo:  

Valor:


c = Thing()
print(thing_mangle(c))

Tipo:  

Valor: